package com.zcyh.exam.job.scheduling;

import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.zcyh.exam.mapper.ScheduledMapper;
import com.zcyh.exam.model.entity.SpringScheduledCron;
import com.zcyh.exam.utils.spring.SpringUtil;

/**
 * @author timo 2021/4/1
 */
public interface ScheduledOfTask extends Runnable {

    /**
     * 定时任务方法
     */
    void execute(SpringScheduledCron scheduledCron);
    /**
     * 实现控制定时任务启用或禁用的功能
     */
    @Override
    default void run() {
        ScheduledMapper mapper = SpringUtil.getBean(ScheduledMapper.class);
        SpringScheduledCron scheduledCron = mapper.selectOne(Wrappers.<SpringScheduledCron>lambdaQuery()
            .eq(SpringScheduledCron::getCronKey, this.getClass().getName())
            .eq(SpringScheduledCron::getStatus,1)
        );
        //禁用了不执行
        if(scheduledCron==null){
            return;
        }
        execute(scheduledCron);
    }
}
